package xgame.chat.handler;

import xgame.AbstractXhandler;
import xgame.chat.bizservice.Services;
import xgame.chat.cmd.MessageCmd;
import xgame.chat.model.ChatMessage;
import xgame.chat.result.MessageResult;

/**
 * 消息处理器
 * 
 * @author AfritXia
 * @version $Rev: 97 $
 *
 */
public class MessageHandler extends AbstractXhandler<MessageCmd> {
	@Override
	public void handle() {
		// 获取用户 Id
		Object objUserId = this.getSession().getAttribute("__userId");
		// 获取用户名称
		Object objUserName = this.getSession().getAttribute("__userName");

		if (objUserId == null) {
			return;
		}

		ChatMessage msg = new ChatMessage();

		// 用户 Id
		msg.setUserId((Long)objUserId);
		// 发送用户名称
		msg.setPostUser((String)objUserName);
		// 文本
		msg.setText(this.getCommand().getText());
		
		// 广播消息
		MessageResult result = Services.getChatService().broadcast(msg);

		if (result == null) {
			return;
		}
		
		// 设置会话 Id
		result.setSessionId(this.getSession().getId());
		// 写出结果
		this.getOutput().write(result);
	}
}
